package net.soevar.email.sender;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSender {
	private static String mailhost = "smtp.gmail.com";

	public synchronized static void sendMail(String subject, String body,
			String sender, String recipients) throws Exception {

		// Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

		final Properties properties = System.getProperties();

		Properties props = new Properties();
		props.setProperty("mail.transport.protocol", "smtp");
		props.setProperty("mail.host", mailhost);
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.port", "465");
		props.put("mail.smtp.socketFactory.port", "465");
		props.put("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory");
		props.put("mail.smtp.socketFactory.fallback", "false");
		props.setProperty("mail.smtp.quitwait", "false");
		//
		// props.put("mail.smtp.host", "smtp.gmail.com");
		// props.put("mail.smtp.socketFactory.port", "465");
		// props.put("mail.smtp.socketFactory.class",
		// "javax.net.ssl.SSLSocketFactory");
		// props.put("mail.smtp.starttls.enable", "true");
		// props.put("mail.smtp.auth", "true");
		// props.put("mail.smtp.port", "465");

		Session session = Session.getDefaultInstance(props,
				new javax.mail.Authenticator() {
					protected PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication(
								properties.getProperty("email_username") == null ? "supardi.samoe@gmail.com"
										: properties
												.getProperty("email_username"),
								properties.getProperty("email_password") == null ? "Norak2siap"
										: properties
												.getProperty("email_password"));
					}
				});

		MimeMessage message = new MimeMessage(session);
		message.setSender(new InternetAddress(sender));
		message.setSubject(subject);
		message.setContent(body, "text/html");
		if (recipients.indexOf(',') > 0)
			message.setRecipients(Message.RecipientType.TO,
					InternetAddress.parse(recipients));
		else
			message.setRecipient(Message.RecipientType.TO, new InternetAddress(
					recipients));

		Transport.send(message);

	}

	public static void main(String args[]) throws Exception {
		MailSender.sendMail("test", "test", "salmoedev@gmail.com",
				"supardi.salmoe@gmail.com");

	}

}
